L1-104 九宫格

题目 L1-104 九宫格

image-fdf4577f

思路分析

代码实现

#include<bits/stdc++.h>

using namespace std;

#define endl '\n'

using ll = long long;

using ull = unsigned long long;

using PII = pair<int,int>;

using Pll = pair<ll,ll>;

int dx[4]= {-1,0,1,0},dy[4]= {0,1,0,-1};

const int inf = 0x3f3f3f3f;

bool check(vector<vector<int>>& grid) {

	for (int i = 0; i < 9; ++i) {

		set<int> row, col;

		for (int j = 0; j < 9; ++j) {

			int r = grid[i][j], c = grid[j][i];

			if (r < 1 || r > 9 || row.count(r)) return false;

			if (c < 1 || c > 9 || col.count(c)) return false;

			row.insert(r);

			col.insert(c);

		}

	}

	for (int i = 0; i < 9; i += 3) {

		for (int j = 0; j < 9; j += 3) {

			set<int> box;

			for (int dx = 0; dx < 3; ++dx) {

				for (int dy = 0; dy < 3; ++dy) {

					int val = grid[i + dx][j + dy];

					if (val < 1 || val > 9 || box.count(val)) return false;

					box.insert(val);

				}

			}

		}

	}

	return true;

}

int main() {

	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);

	int n;cin >> n;

	while (n--) {

		vector<vector<int>> grid(9, vector<int>(9));

		for (int i = 0; i < 9; ++i)

			for (int j = 0; j < 9; ++j)

				cin >> grid[i][j];

		cout << (check(grid) ? 1 : 0) << '\n';

	}

	return 0;

}

同类题型

视频讲解


⬅️ L1-103 整数的持续性 🏠 00-天梯赛 ➡️ L2